SGI workstations implement virtual graphics [17] to achieve the goal of ``maximum performance'' rendering. Virtual graphics means that every graphics process has the illusion of exclusive access to the graphics rendering engine. Many systems allow direct access to the graphics hardware. Virtual graphics not only allows direct access, but treats graphics as a virtual system resource. This virtual view of graphics allows the system to contend with simultaneous direct access by multiple graphics processes. Virtual graphics also arbitrates the contention for graphics resources such as screen real estate.
There are three classes of contention that virtualized graphics for a window system must arbitrate:
Concurrent access contention. When different graphics processes are using a single graphics engine, this hardware state must be context switched. With virtual graphics, this context switching is transparent to the graphics process, much the same way processor context switches are transparent to Unix processes.
Screen real estate contention. Window systems arbitrate how windows are arranged on the screen. Virtualized graphics must ensure that rendering is properly clipped to the drawable region of the rendering window. Clipping should be correct even in the face of asynchronous window management operation by the X server. Because window systems like X allow arbitrary overlapping of windows, clipping to arbitrary regions must be possible.
Non-visible resource contention. Modern graphics hardware supports features like double buffering, in which a front buffer is displayed while the next animation frame is generated in a non-visible back buffer. When the frame is complete, a buffer swap effectively copies the back buffer contents into the front visible buffer. Graphics hardware can efficiently perform buffer swaps by tagging all the pixels belonging to a swapping window with a single display mode. The displayed buffer for the window's display mode can be instantaneously changed. But the number of display modes is a limited hardware resource so a virtual graphics system must be ready to virtualize display modes.
Each of these classes of contention are dealt with by SGI's virtualized, direct access rendering for OpenGL.